﻿using GrapeCity.Forguncy.Commands;
using GrapeCity.Forguncy.Plugin;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;

namespace CollectionOperationKit
{
    [Icon("pack://application:,,,/CollectionOperationKit;component/Resources/ObjectIcon.png")]
    [Category("对象与集合操作")]
    public class ClientSideDataConvert : Command
    {

        /// <summary>
        /// 在设计器中展示的插件名称
        /// </summary>
        /// <returns>易读的字符串</returns>
        public override string ToString()
        {
            
                if (String.IsNullOrEmpty(OutParamaterName))
                {
                    return "数据类型转换"; // 命令列表中默认显示的名称
                }
                else
                {
                    return "转换为"+ this.OperationParamaterValueType +"：" + OutParamaterName;
                }

           

        }

        /// <summary>
        /// 插件类型：设置为服务端命令插件
        /// </summary>
        /// <returns>插件类型枚举</returns>
        public override CommandScope GetCommandScope()
        {
            return CommandScope.ClientSide;
        }


        [OrderWeight(100)]
        [DisplayName("原始数据（输入参数）")]
        [FormulaProperty]
        public object InParamater { get; set; }

        [OrderWeight(103)]
        [DisplayName("目标类型")]
        [ComboProperty]
        public PropertyDataType OperationParamaterValueType { get; set; } = PropertyDataType.AUTO;

        [OrderWeight(999)]
        [DisplayName("将结果返回到变量")]
        [ResultToProperty]
        public String OutParamaterName { get; set; }

        [OrderWeight(110)]
        [DisplayName("默认值")]
        [FormulaProperty]
        [Description("如果输入参数不能转换为该数据类型时，将返回【默认值】。")]
        public object DefaultParamater { get; set; }

        [OrderWeight(105)]
        [DisplayName("Null值")]
        [FormulaProperty]
        [Description("如果输入参数为Null时，将返回【Null值】。")]
        public object NullValueParamater { get; set; }
    }
}
